<?php

require_once 'Framework/Controller/Request/Http.php';
require_once 'application/models/Room.php';

class Stat_Access
{
	
	/**
	 * записываем факт доступа к странице
	 * @param int $page , 0=main page
	 */
	public static function setAccess($page, $ua, $ip)
	{
		Framework_Registry::get('dbh')->query("INSERT INTO stat_pages
							SET stat_pages_page = $page,
								stat_pages_ua = '$ua',
								stat_pages_ip = '$ip'");
	}
	
	/**
	 * кол-во уникальных доступов к страницам
	 * @param int[optional] $page  какая страница (0=главная, 100=остальные)
	 * @param datetime[optional] $dateTo с даты
	 * @param datetime[optional] $dateFrom по дату
	 */
	public static function getAccess($page = 0, $dateTo='',$dateFrom='')
	{
		if (''==$dateFrom) $dateFrom = "SUBTIME( NOW() - INTERVAL 1 week,CURRENT_TIME )";
		if (''==$dateTo) $dateTo = " NOW()";
		return Framework_Registry::get('dbh')->
			selectCell("SELECT COUNT(DISTINCT stat_pages_ua)
						FROM stat_pages
						WHERE stat_pages_date BETWEEN $dateFrom AND $dateTo 
						{ AND stat_pages_page = ? } 
						GROUP BY stat_pages_ip", (-1!==intval($page)) ? $page : DBSIMPLE_SKIP);
	}
	
	/**
	 * записываем факт доступа к комнате.
	 * @param $room str имя комнаты
	 * @param $user int 0|1 пользователь или гость(0)
	 */
	public static function setRoomAccess($room,$user)
	{
		$server = Framework_Controller_Request_Http::getServer();
		$room_name = Room::getRoomNameById($room);
		if (isset($server['HTTP_REFERER']))
			Framework_Registry::get('dbh')->query("INSERT INTO stat_rooms
												SET stat_rooms_name = '$room_name',
												stat_rooms_user = '$user'");
	}
	
	/**
	 * получаем общее кол-во доступов (по комнатам)
	 * @param $room str имя комнаты
	 */
	public static function getTotalAccessByRoom()
	{
		return Framework_Registry::get('dbh')
			->select("SELECT stat_rooms_id, stat_rooms_name, COUNT(stat_rooms_id) as access
						FROM stat_rooms
						GROUP BY stat_rooms_name");
	}
}